<?php
use Think\Cache\Driver\Redis;
function token()
{
	$redis = new Redis();
	if(!$redis->get('token_'.$_SESSION['app']['appid'])){
		$token = myCurl(C('API_URL').'/token?grant_type=client_credential&appid='.$_SESSION['app']['appid'].'&secret='.$_SESSION['app']['appsecret']);
		if(!empty($token))
			$redis->set('token_'.$_SESSION['app']['appid'],$token['access_token'],$token['expires_in']);
	}
	return $redis->get('token_'.$_SESSION['app']['appid']);
}
function myCurl($url,$data='',$type="json"){
	$ch=curl_init();
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
	curl_setopt($ch,CURLOPT_URL,$url);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	if(!empty($data)){
		foreach ($data as &$v){
			if(is_array($v)) unset($v);
		}
		curl_setopt($ch,CURLOPT_POST,true);
		curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
	}
	$strRes=curl_exec($ch);
	if(curl_errno($ch)){
		return  'Curl error: ' . curl_error($ch);
	}
	curl_close($ch);
	switch ($type){
		case 'json':
			$return = json_decode($strRes,true);//返回的json格式数据
			break;
		case 'xml':
			$return = (array) simplexml_load_string($strRes);
			break;
		default:
			return $strRes;
	}
	return $return['errcode'] ? get_api_error($return['errcode']) : $return;
}
function get_api_error($code){
	$error = array(-1 =>'系统繁忙',
			0 =>'请求成功',
			40001 =>'获取access_token时AppSecret错误，或者access_token无效',
			40002 =>'不合法的凭证类型',
			40003 =>'不合法的OpenID',
			40004 =>'不合法的媒体文件类型',
			40005 =>'不合法的文件类型',
			40006 =>'不合法的文件大小',
			40007 =>'不合法的媒体文件id',
			40008 =>'不合法的消息类型',
			40009 =>'不合法的图片文件大小',
			40010 =>'不合法的语音文件大小',
			40011 =>'不合法的视频文件大小',
			40012 =>'不合法的缩略图文件大小',
			40013 =>'不合法的APPID',
			40014 =>'不合法的access_token',
			40015 =>'不合法的菜单类型',
			40016 =>'不合法的按钮个数',
			40017 =>'不合法的按钮个数',
			40018 =>'不合法的按钮名字长度',
			40019 =>'不合法的按钮KEY长度',
			40020 =>'不合法的按钮URL长度',
			40021 =>'不合法的菜单版本号',
			40022 =>'不合法的子菜单级数',
			40023 =>'不合法的子菜单按钮个数',
			40024 =>'不合法的子菜单按钮类型',
			40025 =>'不合法的子菜单按钮名字长度',
			40026 =>'不合法的子菜单按钮KEY长度',
			40027 =>'不合法的子菜单按钮URL长度',
			40028 =>'不合法的自定义菜单使用用户',
			40029 =>'不合法的oauth_code',
			40030 =>'不合法的refresh_token',
			40031 =>'不合法的openid列表',
			40032 =>'不合法的openid列表长度',
			40033 =>'不合法的请求字符，不能包含\uxxxx格式的字符',
			40035 =>'不合法的参数',
			40038 =>'不合法的请求格式',
			40039 =>'不合法的URL长度',
			40050 =>'不合法的分组id',
			40051 =>'分组名字不合法',
			41001 =>'缺少access_token参数',
			41002 =>'缺少appid参数',
			41003 =>'缺少refresh_token参数',
			41004 =>'缺少secret参数',
			41005 =>'缺少多媒体文件数据',
			41006 =>'缺少media_id参数',
			41007 =>'缺少子菜单数据',
			41008 =>'缺少oauth code',
			41009 =>'缺少openid',
			42001 =>'access_token超时',
			42002 =>'refresh_token超时',
			42003 =>'oauth_code超时',
			43001 =>'需要GET请求',
			43002 =>'需要POST请求',
			43003 =>'需要HTTPS请求',
			43004 =>'需要接收者关注',
			43005 =>'需要好友关系',
			44001 =>'多媒体文件为空',
			44002 =>'POST的数据包为空',
			44003 =>'图文消息内容为空',
			44004 =>'文本消息内容为空',
			45001 =>'多媒体文件大小超过限制',
			45002 =>'消息内容超过限制',
			45003 =>'标题字段超过限制',
			45004 =>'描述字段超过限制',
			45005 =>'链接字段超过限制',
			45006 =>'图片链接字段超过限制',
			45007 =>'语音播放时间超过限制',
			45008 =>'图文消息超过限制',
			45009 =>'接口调用超过限制',
			45010 =>'创建菜单个数超过限制',
			45015 =>'回复时间超过限制',
			45016 =>'系统分组，不允许修改',
			45017 =>'分组名字过长',
			45018 =>'分组数量超过上限',
			46001 =>'不存在媒体数据',
			46002 =>'不存在的菜单版本',
			46003 =>'不存在的菜单数据',
			46004 =>'不存在的用户',
			47001 =>'解析JSON/XML内容错误',
			48001 =>'api功能未授权',
			50001 =>'用户未授权该api'
	);
	exit($error[$code]);
}